/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**He utilizado un programa creado por mi en el cual hace referencia a un banco , es decir, las operaciones mas tipicas como Ingrasar dinero o retirarlo y mostrando al final la cuenta y el dinero que hay dentro tanto positivo como negativo para ver que va el programa.El programa sigue un orden el cual piede una cuenta , busca si existe y en caso de que si hace las operaciones sobre ella , en caso que no se creara una nueva con ese numero y dinero debiendo dinero o no.**/
/**Este es el programa ya refactorizado y documentado**/
/**
 * @author Porta
 */
import java.util.Scanner;
public class documentado {

	public static void main (String[]args)
	{
		long []cuenta= new long[1000];
		float[]dinero=new float [1000];
		String opcion;
		int c1=0;
		float auxdinero;
		long auxcuenta;
		int c2=0;
		int c3=0;
		int max=0;
		
	Scanner e = new Scanner (System.in);
        /*Aqui empieza el bucle que permitira al programa repetirse 1000 veces hasta que el usuario escriba 0 para pararlo*/
	while (c1<1000)
	{	/* En este metodo se pide la cuentaa usuario en la que se realizara los cambios*/
		auxcuenta=pedirCuenta(e);
                /*En este "if" se compara la cuenta que hemos metido con 0 , si la cuenta es 0 se para la operaciones y sale las cuentas y el dinero*/
		if(auxcuenta!=0)
                    /*Aqui al usuario se le pregunta que operacion quiere llevar acabo , IMPORTANTE: la opcion tiene que ser en MAYUSCULA */
			{			
			opcion=Opciones(e);
			if(opcion.equals("I"))
                            /* Se pide el dinero quel usuario quiere meter */
				{System.out.println("Introduce la cantidad");
				auxdinero=e.nextFloat();
                                /*Comienza el metodo de busca de la cuenta , en caso que la cuenta exista se sunara el dinero */
                    c2 = buscarcuentaexistentesuma(c2, auxcuenta, cuenta, dinero, auxdinero);
				/*Si la cuenta existe el contador sube a 1001, lo cual el programa da por zanjado la operacion y pide otro o la misma cuenta */
                                    if(c2>1000)
					{c2=0;c1++;}
                                    /*En caso que la cuenta no exista se creara una cuenta con ese dinero */
				else 
					{cuenta[c1]=auxcuenta;
					dinero[c1]=auxdinero;
					c1++;
					c2=0;
					max++;
					
					}}
                        /*En el caso que se quiera quitar dinero*/
			else if(opcion.equals("R"))
				{System.out.println("Introduce la cantidad");
				auxdinero=e.nextFloat();
                               /*Se realiza el mismo metodo de busqueda de al ingrasar pero en este caso se resta */
                    c2 = buscarcuentaexistenteresta(c2, auxcuenta, cuenta, dinero, auxdinero);
                    /*Si la cuenta existe el contador sube a 1001, lo cual el programa da por zanjado la operacion y pide otro o la misma cuenta */
				if(c2>1000)
					{c2=0;c1++;}
                                 /*En caso que la cuenta no exista se creara una cuenta y debera el dinero que a metido */
				else 
					{cuenta[c1]=auxcuenta;
					dinero[c1]=-auxdinero;
					c1++;
					max++;
					c2=0;
					}}}
			else
                     /*En caso que la cuenta es 0 el contador del bucle sube al limite y se acaba las operaciones */
				c1=1000;}
         /*Con este metodo se visializa las cuentas con el dinero que tienen */
        visulaizarcuentas(c3, max, cuenta, dinero);
}

    private static String Opciones(Scanner e) {
        String opcion;
        System.out.println("Introduce la opcion : I= Ingrasar o R=Retirar");
        opcion=e.nextLine();
         opcion=e.nextLine();
        return opcion;
    }

    private static void visulaizarcuentas(int c3, int max, long[] cuenta, float[] dinero) {
        while (c3<max)
        {System.out.println("Cuenta"+" "+cuenta[c3]+" "+"Dinero"+" "+dinero[c3]);
        c3++;}
    }

    private static int buscarcuentaexistenteresta(int c2, long auxcuenta, long[] cuenta, float[] dinero, float auxdinero) {
        while(c2<1000)
        {if(auxcuenta==cuenta[c2])
        {dinero[c2]=dinero[c2]- auxdinero;
        c2=1001;
        
        }
        else
            c2++;
        }
        return c2;
    }

    private static int buscarcuentaexistentesuma(int c2, long auxcuenta, long[] cuenta, float[] dinero, float auxdinero) {
        while(c2<1000)
        {if(auxcuenta==cuenta[c2])
        {dinero[c2]=dinero[c2]+auxdinero;
        c2=1001
                ;
        }
        else
            c2++;
        }
        return c2;
    }

    private static long pedirCuenta(Scanner e) {
        long auxcuenta;
        System.out.println("Introduce tu cuenta bancaria");
        auxcuenta=e.nextInt();
        return auxcuenta;
    }
}
			

		
		
				
	